\hypertarget{class_compound_filter}{\section{Compound\-Filter$<$ Input, Output $>$ Class Template Reference}
\label{class_compound_filter}\index{Compound\-Filter$<$ Input, Output $>$@{Compound\-Filter$<$ Input, Output $>$}}
}


{\ttfamily \#include $<$Compound\-Filter.\-hpp$>$}

Inheritance diagram for Compound\-Filter$<$ Input, Output $>$\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{class_compound_filter}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_compound_filter_a49d4d37582f053a90423cbbc99f8fbf6}{Compound\-Filter} (boost\-::shared\-\_\-ptr$<$ const \hyperlink{class_filter}{Filter}$<$ Input, Output $>$ $>$ filter=Generate\-Cast\-Filter())
\item 
\hyperlink{class_compound_filter_a9c2fac0834c1e62fd8080cedbb0c53b6}{Compound\-Filter} (const \hyperlink{class_filter}{Filter}$<$ Input, Output $>$ $\ast$filter, bool can\-Delete\-Filter=false)
\item 
\hyperlink{class_compound_filter_a8aec9384fdbfce00f6098d2ee9f45a6b}{Compound\-Filter} (const \hyperlink{class_filter}{Filter}$<$ Input, Output $>$ \&filter)
\item 
virtual \hyperlink{class_compound_filter_a6624d0e6b2eccafc3275985520b47523}{$\sim$\-Compound\-Filter} ()
\item 
virtual Output \hyperlink{class_compound_filter_ac2a4357f774a94412fd90007796f5b94}{Apply} (const Input \&input) const 
\item 
void \hyperlink{class_compound_filter_a52480bdab6a8c4c905df9a8d6cad7e04}{Add\-Filter} (boost\-::shared\-\_\-ptr$<$ const \hyperlink{class_filter}{Filter}$<$ Input $>$ $>$ filter)
\item 
void \hyperlink{class_compound_filter_aa0cb1ef3ede7eb4e359f2b85d111678d}{Add\-Filter} (const \hyperlink{class_filter}{Filter}$<$ Input $>$ $\ast$filter, bool can\-Delete\-Filter=false)
\item 
void \hyperlink{class_compound_filter_aef3bf5161d685db0c609278cc996df4a}{Add\-Filter} (boost\-::shared\-\_\-ptr$<$ const \hyperlink{class_filter}{Filter}$<$ Output $>$ $>$ filter)
\item 
void \hyperlink{class_compound_filter_ad4295fbe2db4d56eec2a71e99238e3e1}{Add\-Filter} (const \hyperlink{class_filter}{Filter}$<$ Output $>$ $\ast$filter, bool can\-Delete\-Filter=false)
\item 
{\footnotesize template$<$typename T\-Filter $>$ }\\void \hyperlink{class_compound_filter_a1224b3e5bac91a3b01fa5c56655b65a0}{Add\-Filter} (const T\-Filter \&filter)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Input, typename Output = Input$>$class Compound\-Filter$<$ Input, Output $>$}

The \hyperlink{class_compound_filter}{Compound\-Filter} template class chains multiple Filters to act as a compounded filter.

This is what happens when you apply this filter to an input object.
\begin{DoxyItemize}
\item First, this will apply the added preconvert filters (filters that take an object of type Input and output an object of type Input).
\item Next, this will apply the conversion filter passed to the constructor (the filter that takes an object of type Input and outputs an object of type Output).
\item Finally, this will apply the added postconvert filters (filters that take an object of type Output and output an object of type Output).
\end{DoxyItemize}


\begin{DoxyTemplParams}{Template Parameters}
{\em Input} & The type of the input object. \\
\hline
{\em Output} & The type of the output object. \\
\hline
\end{DoxyTemplParams}


\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_compound_filter_a49d4d37582f053a90423cbbc99f8fbf6}{\index{Compound\-Filter@{Compound\-Filter}!Compound\-Filter@{Compound\-Filter}}
\index{Compound\-Filter@{Compound\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Compound\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ {\bf Compound\-Filter}$<$ Input, Output $>$\-::{\bf Compound\-Filter} (
\begin{DoxyParamCaption}
\item[{boost\-::shared\-\_\-ptr$<$ const {\bf Filter}$<$ Input, Output $>$ $>$}]{filter = {\ttfamily GenerateCastFilter()}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_a49d4d37582f053a90423cbbc99f8fbf6}
Constructor for \hyperlink{class_compound_filter}{Compound\-Filter}.


\begin{DoxyParams}{Parameters}
{\em filter} & A shared pointer to the conversion filter. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_a9c2fac0834c1e62fd8080cedbb0c53b6}{\index{Compound\-Filter@{Compound\-Filter}!Compound\-Filter@{Compound\-Filter}}
\index{Compound\-Filter@{Compound\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Compound\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ {\bf Compound\-Filter}$<$ Input, Output $>$\-::{\bf Compound\-Filter} (
\begin{DoxyParamCaption}
\item[{const {\bf Filter}$<$ Input, Output $>$ $\ast$}]{filter, }
\item[{bool}]{can\-Delete\-Filter = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_a9c2fac0834c1e62fd8080cedbb0c53b6}
Constructor for \hyperlink{class_compound_filter}{Compound\-Filter}.


\begin{DoxyParams}{Parameters}
{\em filter} & A pointer to the conversion filter. \\
\hline
{\em can\-Delete\-Filter} & If the \hyperlink{class_compound_filter}{Compound\-Filter} can delete the \hyperlink{class_filter}{Filter} so long as it functions correctly. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_a8aec9384fdbfce00f6098d2ee9f45a6b}{\index{Compound\-Filter@{Compound\-Filter}!Compound\-Filter@{Compound\-Filter}}
\index{Compound\-Filter@{Compound\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Compound\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ {\bf Compound\-Filter}$<$ Input, Output $>$\-::{\bf Compound\-Filter} (
\begin{DoxyParamCaption}
\item[{const {\bf Filter}$<$ Input, Output $>$ \&}]{filter}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_a8aec9384fdbfce00f6098d2ee9f45a6b}
Constructor for \hyperlink{class_compound_filter}{Compound\-Filter}.


\begin{DoxyParams}{Parameters}
{\em filter} & A reference to the conversion filter. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_a6624d0e6b2eccafc3275985520b47523}{\index{Compound\-Filter@{Compound\-Filter}!$\sim$\-Compound\-Filter@{$\sim$\-Compound\-Filter}}
\index{$\sim$\-Compound\-Filter@{$\sim$\-Compound\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{$\sim$\-Compound\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ virtual {\bf Compound\-Filter}$<$ Input, Output $>$\-::$\sim${\bf Compound\-Filter} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{class_compound_filter_a6624d0e6b2eccafc3275985520b47523}
Destructor for \hyperlink{class_compound_filter}{Compound\-Filter}. 

\subsection{Member Function Documentation}
\hypertarget{class_compound_filter_a52480bdab6a8c4c905df9a8d6cad7e04}{\index{Compound\-Filter@{Compound\-Filter}!Add\-Filter@{Add\-Filter}}
\index{Add\-Filter@{Add\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Add\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ void {\bf Compound\-Filter}$<$ Input, Output $>$\-::Add\-Filter (
\begin{DoxyParamCaption}
\item[{boost\-::shared\-\_\-ptr$<$ const {\bf Filter}$<$ Input $>$ $>$}]{filter}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_a52480bdab6a8c4c905df9a8d6cad7e04}
Add a \hyperlink{class_filter}{Filter}.

This overload adds a preconvert filter (one that is applied before the conversion filter).


\begin{DoxyParams}{Parameters}
{\em filter} & A shared pointer to the filter to be added. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_aa0cb1ef3ede7eb4e359f2b85d111678d}{\index{Compound\-Filter@{Compound\-Filter}!Add\-Filter@{Add\-Filter}}
\index{Add\-Filter@{Add\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Add\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ void {\bf Compound\-Filter}$<$ Input, Output $>$\-::Add\-Filter (
\begin{DoxyParamCaption}
\item[{const {\bf Filter}$<$ Input $>$ $\ast$}]{filter, }
\item[{bool}]{can\-Delete\-Filter = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_aa0cb1ef3ede7eb4e359f2b85d111678d}
Add a \hyperlink{class_filter}{Filter}.

This overload adds a preconvert filter (one that is applied before the conversion filter).


\begin{DoxyParams}{Parameters}
{\em filter} & A pointer to the filter to be added. \\
\hline
{\em can\-Delete\-Filter} & If the \hyperlink{class_compound_filter}{Compound\-Filter} can delete the \hyperlink{class_filter}{Filter} so long as it functions correctly. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_aef3bf5161d685db0c609278cc996df4a}{\index{Compound\-Filter@{Compound\-Filter}!Add\-Filter@{Add\-Filter}}
\index{Add\-Filter@{Add\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Add\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ void {\bf Compound\-Filter}$<$ Input, Output $>$\-::Add\-Filter (
\begin{DoxyParamCaption}
\item[{boost\-::shared\-\_\-ptr$<$ const {\bf Filter}$<$ Output $>$ $>$}]{filter}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_aef3bf5161d685db0c609278cc996df4a}
Add a \hyperlink{class_filter}{Filter}.

This overload adds a postconvert filter (one that is applied after the conversion filter).


\begin{DoxyParams}{Parameters}
{\em filter} & A shared pointer to the filter to be added. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_ad4295fbe2db4d56eec2a71e99238e3e1}{\index{Compound\-Filter@{Compound\-Filter}!Add\-Filter@{Add\-Filter}}
\index{Add\-Filter@{Add\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Add\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ void {\bf Compound\-Filter}$<$ Input, Output $>$\-::Add\-Filter (
\begin{DoxyParamCaption}
\item[{const {\bf Filter}$<$ Output $>$ $\ast$}]{filter, }
\item[{bool}]{can\-Delete\-Filter = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_ad4295fbe2db4d56eec2a71e99238e3e1}
Add a \hyperlink{class_filter}{Filter}.

This overload adds a postconvert filter (one that is applied after the conversion filter).


\begin{DoxyParams}{Parameters}
{\em filter} & A pointer to the filter to be added. \\
\hline
{\em can\-Delete\-Filter} & If the \hyperlink{class_compound_filter}{Compound\-Filter} can delete the \hyperlink{class_filter}{Filter} so long as it functions correctly. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_a1224b3e5bac91a3b01fa5c56655b65a0}{\index{Compound\-Filter@{Compound\-Filter}!Add\-Filter@{Add\-Filter}}
\index{Add\-Filter@{Add\-Filter}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Add\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ template$<$typename T\-Filter $>$ void {\bf Compound\-Filter}$<$ Input, Output $>$\-::Add\-Filter (
\begin{DoxyParamCaption}
\item[{const T\-Filter \&}]{filter}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{class_compound_filter_a1224b3e5bac91a3b01fa5c56655b65a0}
Add a \hyperlink{class_filter}{Filter}.


\begin{DoxyParams}{Parameters}
{\em filter} & A reference to the filter to be added. \\
\hline
\end{DoxyParams}
\hypertarget{class_compound_filter_ac2a4357f774a94412fd90007796f5b94}{\index{Compound\-Filter@{Compound\-Filter}!Apply@{Apply}}
\index{Apply@{Apply}!CompoundFilter@{Compound\-Filter}}
\subsubsection[{Apply}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input, typename Output = Input$>$ virtual Output {\bf Compound\-Filter}$<$ Input, Output $>$\-::Apply (
\begin{DoxyParamCaption}
\item[{const Input \&}]{input}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{class_compound_filter_ac2a4357f774a94412fd90007796f5b94}
Apply the added filters to an input.

This will first apply the preconvert filters (filters that take an object of type Input and output an object of type Input). Next, this will apply the conversion filter (the filter that takes an object of type Input and outputs an object of type Output). Finally, this will apply the postconvert filters (filters that take an object of type Output and output an object of type Output).


\begin{DoxyParams}{Parameters}
{\em input} & A reference to the input (which will not get modified). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The output of the filtered input. 
\end{DoxyReturn}


Implements \hyperlink{class_filter_a377c1d2a9400698fdf5a41d293fd32b8}{Filter$<$ Input, Output $>$}.



The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
C\-:/\-Users/\-Sam/\-Projects/\-F\-R\-C/\-Libraries/\-Fpk/\-Entech-\/\-Fpk-\/\-Subscribers/\-Entech-\/\-Fpk/\-Filters/Compound\-Filter.\-hpp\end{DoxyCompactItemize}
